package supermercado;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Producto {
	private String codigoBarra;
	private String descripcion;
	private double precio;

	public String getCodigoBarra() {
		return codigoBarra;
	}
	public void setCodigoBarra(String codigoBarra) {
		this.codigoBarra = codigoBarra;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public double getPrecio() {
		return precio;
	}
	public void setPrecio(double precio) {
		this.precio = precio;
	}
	
	/**
	 * Guardar un producto en la base de datos
	 */
	public void save() {
		try {
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/supermercado?user=root");
			
			PreparedStatement statement = 
					connection.prepareStatement("INSERT INTO producto (codigoBarra, descripcion, precio) VALUES (?, ?, ?)");
			statement.setString(1, this.codigoBarra);
			statement.setString(2, this.descripcion);
			statement.setDouble(3, this.precio);
			
			statement.execute();
		} catch (SQLException e) {
			throw new RuntimeException("Error al acceder a la db", e);
		}
	}
	
	public static Producto findByCodigoBarra(String value) {
		try {
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/supermercado?user=root");
			
			PreparedStatement statement = 
					connection.prepareStatement("SELECT codigoBarra, descripcion, precio FROM producto WHERE codigoBarra = ?");
			statement.setString(1, value);
			
			ResultSet rs = statement.executeQuery();
			
			Producto producto = null;
			while(rs.next()) {
				producto = new Producto();
				producto.setCodigoBarra(rs.getString("codigoBarra"));
				producto.setDescripcion(rs.getString("descripcion"));
				producto.setPrecio(rs.getDouble("precio"));
			}
			
			statement.close();
			connection.close();
			return producto;
			
			/* OTRA FORMA IGUAL DE BIEN
			
			if(rs.next() == false) return null;
			
			Producto producto = new Producto();
			producto.setCodigoBarra(rs.getString("codigoBarra"));
			producto.setDescripcion(rs.getString("descripcion"));
			producto.setPrecio(rs.getDouble("precio"));
			
			statement.close();
			connection.close();
			return producto;
			*/
			
		} catch (SQLException e) {
			throw new RuntimeException("Error al acceder a la db", e);
		}
	}
}
